{"name": "tcg_reg_alloc_bb_end", "code": "unsigned __int64 __fastcall tcg_reg_alloc_bb_end ( __int64 @@a1@@ , int @@a2@@ ) { int @@i@@ ; __int64 @@v4@@ ; unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; for ( @@i@@ = * ( _DWORD * ) ( @@a1@@ + Number ) ; @@i@@ < * ( _DWORD * ) ( @@a1@@ + Number ) ; ++ @@i@@ ) { @@v4@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * @@i@@ ; if ( ( * ( _BYTE * ) ( @@v4@@ + Number ) & Number ) != Number ) { temp_save ( @@a1@@ , @@i@@ , @@a2@@ ) ; } else { if ( * ( _DWORD * ) ( @@v4@@ + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( @@v4@@ + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( @@v4@@ + Number ) = Number ; } } save_globals ( @@a1@@ , @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"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": "__int64", "s": 8}, "location": "s16"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "tcg_reg_alloc", "code": "__int64 __fastcall tcg_reg_alloc ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ ) { unsigned int i ; unsigned int j ; unsigned int @@v6@@ ; int v7 ; unsigned int v8 ; @@v6@@ = @@a2@@ & ~ @@a3@@ ; for ( i = Number ; i <= Number ; ++ i ) { v7 = tcg_target_reg_alloc_order [ i ] ; if ( ( ( @@v6@@ >> v7 ) & Number ) != Number && * ( _DWORD * ) ( @@a1@@ + Number * ( v7 + Number L ) + Number ) == Number ) return ( unsigned int ) v7 ; } for ( j = Number ; ; ++ j ) { if ( j > Number ) { fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } v8 = tcg_target_reg_alloc_order [ j ] ; if ( ( ( @@v6@@ >> v8 ) & Number ) != Number ) break ; } tcg_reg_free ( @@a1@@ , v8 ) ; return v8 ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "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": "v6", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}]} {"name": "temp_save", "code": "unsigned __int64 __fastcall temp_save ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ ) { int @@v3@@ ; int @@v5@@ ; __int64 @@v6@@ ; unsigned __int64 @@v7@@ ; @@v7@@ = __readfsqword ( Number ) ; @@v6@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * @@a2@@ ; if ( ( * ( _BYTE * ) ( @@v6@@ + Number ) & Number ) == Number ) { @@v3@@ = * ( _DWORD * ) ( @@v6@@ + Number ) ; if ( @@v3@@ == Number ) { @@v5@@ = tcg_reg_alloc ( @@a1@@ , tcg_target_available_regs [ * ( unsigned int * ) ( @@v6@@ + Number ) ] , @@a3@@ ) ; if ( ( * ( _BYTE * ) ( @@v6@@ + Number ) & Number ) == Number ) temp_allocate_frame ( @@a1@@ , @@a2@@ ) ; tcg_out_movi ( @@a1@@ , * ( _DWORD * ) ( @@v6@@ + Number ) , @@v5@@ , * ( _QWORD * ) ( @@v6@@ + Number ) ) ; tcg_out_st ( @@a1@@ , * ( _DWORD * ) ( @@v6@@ + Number ) , @@v5@@ , * ( _DWORD * ) ( @@v6@@ + Number ) , * ( _QWORD * ) ( @@v6@@ + Number ) ) ; * ( _DWORD * ) ( @@v6@@ + Number ) = Number ; } else { if ( @@v3@@ > Number ) goto LABEL_12 ; if ( @@v3@@ != Number ) { if ( ! @@v3@@ ) { * ( _DWORD * ) ( @@v6@@ + Number ) = Number ; return __readfsqword ( Number ) ^ @@v7@@ ; } if ( @@v3@@ == Number ) { tcg_reg_free ( @@a1@@ , * ( _DWORD * ) ( @@v6@@ + Number ) ) ; return __readfsqword ( Number ) ^ @@v7@@ ; } LABEL_12 : fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } } } return __readfsqword ( Number ) ^ @@v7@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "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": "v3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "v7", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "save_globals", "code": "unsigned __int64 __fastcall save_globals ( __int64 @@a1@@ , int @@a2@@ ) { int @@i@@ ; unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; for ( @@i@@ = Number ; @@i@@ < * ( _DWORD * ) ( @@a1@@ + Number ) ; ++ @@i@@ ) temp_save ( @@a1@@ , @@i@@ , @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v4@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "tcg_reg_alloc_op", "code": "unsigned __int64 __fastcall tcg_reg_alloc_op ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ , __int64 @@a4@@ , unsigned int @@a5@@ ) { int v9 ; int v10 ; int v11 ; int j ; int v13 ; int m ; int i ; int l ; int v17 ; int v18 ; int v19 ; int k ; int v21 ; int v22 ; int @@v23@@ ; int @@v24@@ ; __int64 v25 ; __int64 v26 ; __int64 v27 ; __int64 v28 ; __int64 v29 ; __int64 v30 ; __int64 v31 ; __int64 v32 ; int @@v33@@ [ Number ] ; __int64 @@v34@@ [ Number ] ; unsigned __int64 @@v35@@ ; @@v35@@ = __readfsqword ( Number ) ; @@v23@@ = * ( unsigned __int8 * ) ( @@a2@@ + Number ) ; @@v24@@ = * ( unsigned __int8 * ) ( @@a2@@ + Number ) ; memcpy ( & @@v34@@ [ * ( unsigned __int8 * ) ( @@a2@@ + Number ) + ( unsigned __int64 ) * ( unsigned __int8 * ) ( @@a2@@ + Number ) ] , ( const void * ) ( @@a4@@ + Number * ( * ( unsigned __int8 * ) ( @@a2@@ + Number ) + ( unsigned __int64 ) * ( unsigned __int8 * ) ( @@a2@@ + Number ) ) ) , Number L * * ( unsigned __int8 * ) ( @@a2@@ + Number ) ) ; v9 = * ( _DWORD * ) ( @@a1@@ + Number ) ; for ( i = Number ; i < @@v24@@ ; ++ i ) { v11 = * ( _DWORD * ) ( Number L * ( @@v23@@ + i ) + * ( _QWORD * ) ( @@a2@@ + Number ) ) ; v25 = * ( _QWORD * ) ( Number L * v11 + @@a4@@ ) ; v27 = Number L * v11 + * ( _QWORD * ) ( @@a2@@ + Number ) ; v29 = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * v25 ; if ( * ( _DWORD * ) ( v29 + Number ) == Number ) { v17 = tcg_reg_alloc ( @@a1@@ , * ( _DWORD * ) ( v27 + Number ) , v9 ) ; tcg_out_ld ( @@a1@@ , * ( _DWORD * ) ( v29 + Number ) , v17 , * ( _DWORD * ) ( v29 + Number ) , * ( _QWORD * ) ( v29 + Number ) ) ; * ( _DWORD * ) ( v29 + Number ) = Number ; * ( _DWORD * ) ( v29 + Number ) = v17 ; * ( _BYTE * ) ( v29 + Number ) |= Number ; * ( _DWORD * ) ( @@a1@@ + Number * ( v17 + Number L ) + Number ) = v25 ; } else if ( * ( _DWORD * ) ( v29 + Number ) == Number ) { if ( tcg_target_const_match ( * ( _QWORD * ) ( v29 + Number ) , ( __int16 * ) v27 ) ) { @@v33@@ [ v11 ] = Number ; @@v34@@ [ v11 ] = * ( _QWORD * ) ( v29 + Number ) ; continue ; } v18 = tcg_reg_alloc ( @@a1@@ , * ( _DWORD * ) ( v27 + Number ) , v9 ) ; tcg_out_movi ( @@a1@@ , * ( _DWORD * ) ( v29 + Number ) , v18 , * ( _QWORD * ) ( v29 + Number ) ) ; * ( _DWORD * ) ( v29 + Number ) = Number ; * ( _DWORD * ) ( v29 + Number ) = v18 ; * ( _BYTE * ) ( v29 + Number ) &= Number ; * ( _DWORD * ) ( @@a1@@ + Number * ( v18 + Number L ) + Number ) = v25 ; } if ( ( * ( _WORD * ) v27 & Number ) != Number ) { if ( ( * ( _BYTE * ) ( v29 + Number ) & Number ) != Number ) { if ( v25 != * ( _QWORD * ) ( Number L * * ( unsigned __int8 * ) ( v27 + Number ) + @@a4@@ ) ) goto LABEL_14 ; } else if ( ( ( @@a5@@ >> ( v11 - @@v23@@ ) ) & Number ) == Number ) { goto LABEL_14 ; } } v19 = * ( _DWORD * ) ( v29 + Number ) ; if ( ( ( * ( _DWORD * ) ( v27 + Number ) >> v19 ) & Number ) == Number ) { LABEL_14 : v19 = tcg_reg_alloc ( @@a1@@ , * ( _DWORD * ) ( v27 + Number ) , v9 ) ; tcg_out_mov ( @@a1@@ , * ( _DWORD * ) ( v29 + Number ) , v19 , * ( _DWORD * ) ( v29 + Number ) ) ; } @@v34@@ [ v11 ] = v19 ; @@v33@@ [ v11 ] = Number ; v9 |= Number L << v19 ; } if ( ( * ( _BYTE * ) ( @@a2@@ + Number ) & Number ) == Number ) { for ( j = Number ; j < @@v24@@ ; ++ j ) { if ( ( ( @@a5@@ >> j ) & Number ) != Number ) { v30 = * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( _QWORD * ) ( Number L * ( @@v23@@ + j ) + @@a4@@ ) ; if ( ( * ( _BYTE * ) ( v30 + Number ) & Number ) == Number ) { if ( * ( _DWORD * ) ( v30 + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( v30 + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( v30 + Number ) = Number ; } } } if ( ( * ( _BYTE * ) ( @@a2@@ + Number ) & Number ) != Number ) { for ( k = Number ; k <= Number ; ++ k ) { if ( ( ( ( unsigned int ) tcg_target_call_clobber_regs >> k ) & Number ) != Number ) tcg_reg_free ( @@a1@@ , k ) ; } save_globals ( @@a1@@ , v9 ) ; } v10 = * ( _DWORD * ) ( @@a1@@ + Number ) ; for ( l = Number ; ; ++ l ) { if ( l >= @@v23@@ ) goto LABEL_47 ; v13 = * ( _DWORD * ) ( Number L * l + * ( _QWORD * ) ( @@a2@@ + Number ) ) ; v26 = * ( _QWORD * ) ( Number L * v13 + @@a4@@ ) ; v28 = Number L * v13 + * ( _QWORD * ) ( @@a2@@ + Number ) ; v31 = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * v26 ; if ( ( * ( _WORD * ) v28 & Number ) != Number ) { v21 = @@v34@@ [ * ( unsigned __int8 * ) ( v28 + Number ) ] ; } else { v21 = * ( _DWORD * ) ( v31 + Number ) ; if ( ( * ( _BYTE * ) ( v31 + Number ) & Number ) != Number && ( ( * ( _DWORD * ) ( v28 + Number ) >> v21 ) & Number ) != Number ) goto LABEL_45 ; v21 = tcg_reg_alloc ( @@a1@@ , * ( _DWORD * ) ( v28 + Number ) , v10 ) ; } v10 |= Number L << v21 ; if ( ( * ( _BYTE * ) ( v31 + Number ) & Number ) == Number ) { if ( * ( _DWORD * ) ( v31 + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( v31 + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( v31 + Number ) = Number ; * ( _DWORD * ) ( v31 + Number ) = v21 ; * ( _BYTE * ) ( v31 + Number ) &= Number ; * ( _DWORD * ) ( @@a1@@ + Number * ( v21 + Number L ) + Number ) = v26 ; } LABEL_45 : @@v34@@ [ v13 ] = v21 ; } } tcg_reg_alloc_bb_end ( @@a1@@ , v9 ) ; LABEL_47 : tcg_out_op ( @@a1@@ , @@a3@@ , @@v34@@ , @@v33@@ ) ; for ( m = Number ; m < @@v23@@ ; ++ m ) { v32 = * ( _QWORD * ) ( @@a1@@ + Number ) + Number L * * ( _QWORD * ) ( Number L * m + @@a4@@ ) ; v22 = @@v34@@ [ m ] ; if ( ( * ( _BYTE * ) ( v32 + Number ) & Number ) != Number && v22 != * ( _DWORD * ) ( v32 + Number ) ) tcg_out_mov ( @@a1@@ , * ( _DWORD * ) ( v32 + Number ) , * ( _DWORD * ) ( v32 + Number ) , v22 ) ; } return __readfsqword ( Number ) ^ @@v35@@ ; }", "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": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r72"}, {"n": "v34", "t": {"T": 2, "n": 17, "s": 8, "t": "__int64"}, "location": "s144"}, {"n": "v33", "t": {"T": 2, "n": 16, "s": 4, "t": "int"}, "location": "s208"}, {"n": "v24", "t": {"T": 1, "n": "int", "s": 4}, "location": "s236"}, {"n": "v23", "t": {"T": 1, "n": "int", "s": 4}, "location": "s240"}, {"n": "v35", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "tcg_gen_code_common", "code": "__int64 __fastcall tcg_gen_code_common ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { unsigned int @@v5@@ ; int @@v6@@ ; __int64 * @@v7@@ ; void * * @@v8@@ ; __int64 @@v9@@ ; if ( ( loglevel & Number ) != Number ) { if ( logfile ) fwrite ( String , Number , Number , logfile ) ; tcg_dump_ops ( @@a1@@ , logfile ) ; if ( logfile ) fputc ( Number , logfile ) ; } tcg_liveness_analysis ( @@a1@@ ) ; if ( ( loglevel & Number ) != Number ) { if ( logfile ) fwrite ( String , Number , Number , logfile ) ; tcg_dump_ops ( @@a1@@ , logfile ) ; if ( logfile ) fputc ( Number , logfile ) ; } tcg_reg_alloc_start ( @@a1@@ ) ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a2@@ ; * ( _QWORD * ) ( @@a1@@ + Number ) = @@a2@@ ; @@v7@@ = ( __int64 * ) & gen_opparam_buf ; @@v5@@ = Number ; while ( Number ) { @@v6@@ = * ( ( unsigned __int16 * ) & gen_opc_buf + ( int ) @@v5@@ ) ; @@v8@@ = & tcg_op_defs + Number * * ( ( unsigned __int16 * ) & gen_opc_buf + ( int ) @@v5@@ ) ; switch ( * ( ( _WORD * ) & gen_opc_buf + ( int ) @@v5@@ ) ) { case Number : return Number ; case Number : case Number : case Number : case Number : case Number : goto LABEL_23 ; case Number : @@v7@@ += * @@v7@@ ; goto LABEL_24 ; case Number : @@v9@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * * @@v7@@ ; if ( ( * ( _BYTE * ) ( @@v9@@ + Number ) & Number ) == Number ) { if ( * ( _DWORD * ) ( @@v9@@ + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( @@v9@@ + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( @@v9@@ + Number ) = Number ; } goto LABEL_23 ; case Number : tcg_reg_alloc_bb_end ( @@a1@@ , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; tcg_out_label ( @@a1@@ , * @@v7@@ , * ( _QWORD * ) ( @@a1@@ + Number ) ) ; goto LABEL_23 ; case Number : @@v7@@ += ( int ) tcg_reg_alloc_call ( @@a1@@ , ( __int64 ) @@v8@@ , @@v6@@ , @@v7@@ , * ( unsigned __int16 * ) ( Number L * ( int ) @@v5@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) ; goto LABEL_24 ; case Number : case Number : tcg_reg_alloc_mov ( @@a1@@ , ( __int64 ) @@v8@@ , @@v7@@ , * ( _WORD * ) ( Number L * ( int ) @@v5@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) ; goto LABEL_23 ; case Number : case Number : tcg_reg_alloc_movi ( @@a1@@ , @@v7@@ ) ; goto LABEL_23 ; default : tcg_reg_alloc_op ( @@a1@@ , ( __int64 ) @@v8@@ , @@v6@@ , ( __int64 ) @@v7@@ , * ( unsigned __int16 * ) ( Number L * ( int ) @@v5@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) ; LABEL_23 : @@v7@@ += * ( ( unsigned __int8 * ) @@v8@@ + Number ) ; LABEL_24 : if ( @@a3@@ < Number || @@a3@@ >= * ( _QWORD * ) ( @@a1@@ + Number ) - @@a2@@ ) { ++ @@v5@@ ; continue ; } return @@v5@@ ; } } }", "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": "__int64", "s": 8}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v8", "t": {"T": 3, "t": "void *"}, "location": "s24"}, {"n": "v7", "t": {"T": 3, "t": "__int64"}, "location": "s32"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}]}