{"name": "add_perf_probe_events", "code": "__int64 __fastcall add_perf_probe_events ( __int64 @@a1@@ , int @@a2@@ , unsigned int @@a3@@ , const char * @@a4@@ , unsigned __int8 @@a5@@ ) { int i ; int j ; int k ; int @@l@@ ; int @@v13@@ ; _QWORD * @@ptr@@ ; @@ptr@@ = zalloc ( Number L * @@a2@@ ) ; if ( ! @@ptr@@ ) return Number L ; @@v13@@ = init_vmlinux ( ) ; if ( @@v13@@ >= Number ) { for ( i = Number ; i < @@a2@@ ; ++ i ) { @@ptr@@ [ Number * i ] = Number L * i + @@a1@@ ; @@v13@@ = convert_to_probe_trace_events ( @@ptr@@ [ Number * i ] , & @@ptr@@ [ Number * i + Number ] , @@a3@@ , @@a4@@ ) ; if ( @@v13@@ < Number ) goto LABEL_12 ; LODWORD ( @@ptr@@ [ Number * i + Number ] ) = @@v13@@ ; } for ( j = Number ; j < @@a2@@ ; ++ j ) { @@v13@@ = _add_probe_trace_events ( ( char * * ) @@ptr@@ [ Number * j ] , @@ptr@@ [ Number * j + Number ] , @@ptr@@ [ Number * j + Number ] , @@a5@@ ) ; if ( @@v13@@ < Number ) break ; } LABEL_12 : for ( k = Number ; k < @@a2@@ ; ++ k ) { for ( @@l@@ = Number ; @@l@@ < SLODWORD ( @@ptr@@ [ Number * k + Number ] ) ; ++ @@l@@ ) clear_probe_trace_event ( ( ( __int64 ) @@l@@ << Number ) + @@ptr@@ [ Number * k + Number ] ) ; free ( ( void * ) @@ptr@@ [ Number * k + Number ] ) ; } } free ( @@ptr@@ ) ; return ( unsigned int ) @@v13@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "const char"}, "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": "unsigned __int8", "s": 1}, "location": "r72"}, {"n": "ptr", "t": {"T": 3, "t": "_QWORD"}, "location": "s16"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "l", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}]}
{"name": "zalloc", "code": "void * __fastcall zalloc ( size_t @@a1@@ ) { return calloc ( Number , @@a1@@ ) ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "size_t", "s": 8}, "location": "r56"}]} {"name": "init_vmlinux", "code": "__int64 init_vmlinux ( ) { int @@v1@@ ; * ( ( _BYTE * ) & symbol_conf + Number ) = Number ; if ( * ( ( _QWORD * ) & symbol_conf + Number ) ) eprintf ( Number L , String , * ( ( const char * * ) & symbol_conf + Number ) ) ; else * ( ( _BYTE * ) & symbol_conf + Number ) = Number ; @@v1@@ = symbol__init ( ) ; if ( @@v1@@ >= Number ) { @@v1@@ = machine__init ( & machine , & unk_5925 , Number ) ; if ( @@v1@@ >= Number && ( int ) machine__create_kernel_maps ( & machine ) < Number ) eprintf ( Number L , String ) ; } else { eprintf ( Number L , String ) ; } if ( @@v1@@ < Number ) eprintf ( Number L , String ) ; return ( unsigned int ) @@v1@@ ; }", "source": [{"n": "v1", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}]} {"name": "clear_probe_trace_event", "code": "unsigned __int64 __fastcall clear_probe_trace_event ( __int64 @@a1@@ ) { __int64 @@v2@@ ; _QWORD * @@i@@ ; _QWORD * @@v4@@ ; unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; if ( * ( _QWORD * ) @@a1@@ ) free ( * ( void * * ) @@a1@@ ) ; if ( * ( _QWORD * ) ( @@a1@@ + Number ) ) free ( * ( void * * ) ( @@a1@@ + Number ) ) ; if ( * ( _QWORD * ) ( @@a1@@ + Number ) ) free ( * ( void * * ) ( @@a1@@ + Number ) ) ; if ( * ( _QWORD * ) ( @@a1@@ + Number ) ) free ( * ( void * * ) ( @@a1@@ + Number ) ) ; LODWORD ( @@v2@@ ) = Number ; while ( ( int ) @@v2@@ < * ( _DWORD * ) ( @@a1@@ + Number ) ) { if ( * ( _QWORD * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) free ( * ( void * * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) ; if ( * ( _QWORD * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) free ( * ( void * * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) ; if ( * ( _QWORD * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) free ( * ( void * * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) ; for ( @@i@@ = * ( _QWORD * * ) ( Number L * ( int ) @@v2@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ; @@i@@ ; @@i@@ = @@v4@@ ) { @@v4@@ = ( _QWORD * ) * @@i@@ ; free ( @@i@@ ) ; } @@v2@@ = ( unsigned int ) ( @@v2@@ + Number ) ; } if ( * ( _QWORD * ) ( @@a1@@ + Number ) ) free ( * ( void * * ) ( @@a1@@ + Number ) ) ; memset ( ( void * ) @@a1@@ , Number , Number ) ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "v4", "t": {"T": 3, "t": "_QWORD"}, "location": "s16"}, {"n": "i", "t": {"T": 3, "t": "_QWORD"}, "location": "s24"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s28"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "convert_to_probe_trace_events", "code": "__int64 __fastcall convert_to_probe_trace_events ( __int64 @@a1@@ , __int64 * @@a2@@ , unsigned int @@a3@@ , const char * @@a4@@ ) { char * * v5 ; __int64 v6 ; __int64 v7 ; unsigned int v9 ; unsigned int v10 ; int @@i@@ ; _QWORD * @@ptr@@ ; __int64 @@v13@@ ; v9 = try_to_find_probe_trace_events ( @@a1@@ , @@a2@@ , @@a3@@ , @@a4@@ ) ; if ( v9 ) return v9 ; * @@a2@@ = ( __int64 ) zalloc ( Number ) ; @@ptr@@ = ( _QWORD * ) * @@a2@@ ; if ( ! * @@a2@@ ) return Number L ; @@ptr@@ [ Number ] = strdup ( * ( const char * * ) ( @@a1@@ + Number ) ) ; if ( @@ptr@@ [ Number ] ) { if ( ! @@a4@@ || ( @@ptr@@ [ Number ] = strdup ( @@a4@@ ) ) != Number L ) { @@ptr@@ [ Number ] = * ( _QWORD * ) ( @@a1@@ + Number ) ; * ( ( _BYTE * ) @@ptr@@ + Number ) = * ( _BYTE * ) ( @@a1@@ + Number ) ; * ( ( _DWORD * ) @@ptr@@ + Number ) = * ( _DWORD * ) ( @@a1@@ + Number ) ; if ( * ( ( _DWORD * ) @@ptr@@ + Number ) ) { @@ptr@@ [ Number ] = zalloc ( Number L * * ( ( int * ) @@ptr@@ + Number ) ) ; if ( ! @@ptr@@ [ Number ] ) { v10 = Number ; goto LABEL_29 ; } for ( @@i@@ = Number ; @@i@@ < * ( ( _DWORD * ) @@ptr@@ + Number ) ; ++ @@i@@ ) { if ( * ( _QWORD * ) ( Number L * @@i@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) { v5 = ( char * * ) ( @@ptr@@ [ Number ] + Number L * @@i@@ ) ; * v5 = strdup ( * ( const char * * ) ( Number L * @@i@@ + * ( _QWORD * ) ( @@a1@@ + Number ) ) ) ; if ( ! * ( _QWORD * ) ( Number L * @@i@@ + @@ptr@@ [ Number ] ) ) { v10 = Number ; goto LABEL_29 ; } } v6 = @@ptr@@ [ Number ] + Number L * @@i@@ ; * ( _QWORD * ) ( v6 + Number ) = strdup ( * ( const char * * ) ( Number L * @@i@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) ; if ( ! * ( _QWORD * ) ( Number L * @@i@@ + @@ptr@@ [ Number ] + Number ) ) { v10 = Number ; goto LABEL_29 ; } if ( * ( _QWORD * ) ( Number L * @@i@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) { v7 = @@ptr@@ [ Number ] + Number L * @@i@@ ; * ( _QWORD * ) ( v7 + Number ) = strdup ( * ( const char * * ) ( Number L * @@i@@ + * ( _QWORD * ) ( @@a1@@ + Number ) + Number ) ) ; if ( ! * ( _QWORD * ) ( Number L * @@i@@ + @@ptr@@ [ Number ] + Number ) ) { v10 = Number ; goto LABEL_29 ; } } } } @@v13@@ = _find_kernel_function_by_name ( @@ptr@@ [ Number ] , Number L ) ; if ( @@v13@@ ) { if ( @@ptr@@ [ Number ] <= * ( _QWORD * ) ( @@v13@@ + Number ) - * ( _QWORD * ) ( @@v13@@ + Number ) ) return Number L ; eprintf ( Number L , String , ( const char * ) @@ptr@@ [ Number ] ) ; v10 = Number ; } else { eprintf ( Number L , String , ( const char * ) @@ptr@@ [ Number ] ) ; v10 = Number ; } } else { v10 = Number ; } } else { v10 = Number ; } LABEL_29 : clear_probe_trace_event ( ( __int64 ) @@ptr@@ ) ; free ( @@ptr@@ ) ; * @@a2@@ = Number L ; return v10 ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "const char"}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "__int64"}, "location": "r64"}, {"n": "v13", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}, {"n": "ptr", "t": {"T": 3, "t": "_QWORD"}, "location": "s40"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s44"}]}