{"name": "show_available_vars_at", "code": "__int64 __fastcall show_available_vars_at ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int @@a3@@ , __int64 @@a4@@ , unsigned __int8 @@a5@@ ) { int @@i@@ ; int @@v10@@ ; int @@v11@@ ; void * @@ptr@@ ; __int64 @@j@@ ; void * @@v14@@ ; __int64 @@v15@@ ; char * @@v16@@ ; unsigned __int64 @@v17@@ ; @@v17@@ = __readfsqword ( Number ) ; @@ptr@@ = Number L ; @@v14@@ = ( void * ) synthesize_perf_probe_point ( @@a2@@ + Number ) ; if ( ! @@v14@@ ) return Number L ; eprintf ( Number L , String , ( const char * ) @@v14@@ ) ; @@v11@@ = debuginfo__find_available_vars_at ( @@a1@@ , @@a2@@ , & @@ptr@@ , @@a3@@ , @@a5@@ ) ; if ( @@v11@@ > Number ) { fprintf ( stdout , String , ( const char * ) @@v14@@ ) ; for ( @@i@@ = Number ; @@i@@ < @@v11@@ ; ++ @@i@@ ) { @@v15@@ = ( __int64 ) @@ptr@@ + Number * @@i@@ ; fprintf ( stdout , String , * ( const char * * ) @@v15@@ , * ( _QWORD * ) ( @@v15@@ + Number ) ) ; free ( * ( void * * ) @@v15@@ ) ; @@v10@@ = Number ; if ( * ( _QWORD * ) ( @@v15@@ + Number ) ) { for ( @@j@@ = strlist__first ( * ( _QWORD * ) ( @@v15@@ + Number ) ) ; @@j@@ ; @@j@@ = strlist__next ( @@j@@ ) ) { @@v16@@ = strchr ( * ( const char * * ) ( @@j@@ + Number ) , Number ) + Number ; if ( ( unsigned __int8 ) strfilter__compare ( @@a4@@ , @@v16@@ ) ) { fprintf ( stdout , String , * ( const char * * ) ( @@j@@ + Number ) ) ; ++ @@v10@@ ; } } strlist__delete ( * ( _QWORD * ) ( @@v15@@ + Number ) ) ; } if ( ! @@v10@@ ) fwrite ( String , Number , Number , stdout ) ; } free ( @@ptr@@ ) ; } else { eprintf ( Number L , String , ( const char * ) @@v14@@ , ( unsigned int ) @@v11@@ ) ; } free ( @@v14@@ ) ; return ( unsigned int ) @@v11@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned 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 __int8", "s": 1}, "location": "r72"}, {"n": "v16", "t": {"T": 3, "t": "char"}, "location": "s16"}, {"n": "v15", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v14", "t": {"T": 3, "t": "void"}, "location": "s32"}, {"n": "j", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "ptr", "t": {"T": 3, "t": "void"}, "location": "s48"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s52"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v17", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "strlist__first", "code": "__int64 __fastcall strlist__first ( __int64 @@a1@@ ) { __int64 @@result@@ ; __int64 @@v2@@ ; @@v2@@ = rb_first ( @@a1@@ ) ; if ( @@v2@@ ) @@result@@ = @@v2@@ ; else @@result@@ = Number L ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}]} {"name": "strlist__next", "code": "__int64 __fastcall strlist__next ( __int64 @@a1@@ ) { __int64 @@result@@ ; __int64 @@v2@@ ; if ( ! @@a1@@ ) return Number L ; @@v2@@ = rb_next ( @@a1@@ ) ; if ( @@v2@@ ) @@result@@ = @@v2@@ ; else @@result@@ = Number L ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}]} {"name": "show_available_vars", "code": "__int64 __fastcall show_available_vars ( __int64 @@a1@@ , int @@a2@@ , unsigned int @@a3@@ , const char * @@a4@@ , __int64 @@a5@@ , unsigned __int8 @@a6@@ ) { __int64 @@result@@ ; int @@i@@ ; int @@v12@@ ; __int64 @@v13@@ ; @@v12@@ = init_vmlinux ( ) ; if ( @@v12@@ < Number ) return ( unsigned int ) @@v12@@ ; @@v13@@ = open_debuginfo ( @@a4@@ ) ; if ( @@v13@@ ) { setup_pager ( ) ; for ( @@i@@ = Number ; @@i@@ < @@a2@@ && @@v12@@ >= Number ; ++ @@i@@ ) @@v12@@ = show_available_vars_at ( @@v13@@ , Number L * @@i@@ + @@a1@@ , @@a3@@ , @@a5@@ , @@a6@@ ) ; debuginfo__delete ( @@v13@@ ) ; @@result@@ = ( unsigned int ) @@v12@@ ; } else { eprintf ( Number L , String ) ; @@result@@ = Number L ; } return @@result@@ ; }", "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": "__int64", "s": 8}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "unsigned __int8", "s": 1}, "location": "r80"}, {"n": "v13", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}]} {"name": "synthesize_perf_probe_point", "code": "char * __fastcall synthesize_perf_probe_point ( __int64 @@a1@@ ) { __int64 v1 ; __int64 v2 ; __int64 v3 ; __int64 v4 ; __int64 v5 ; unsigned int v6 ; char * v8 ; int @@v9@@ ; int @@v10@@ ; char * s ; char * sa ; char * @@ptr@@ ; __int64 @@v14@@ [ Number ] ; __int64 @@v15@@ [ Number ] ; __int64 @@v16@@ [ Number ] ; @@v16@@ [ Number ] = __readfsqword ( Number ) ; @@v14@@ [ Number ] = Number L ; @@v14@@ [ Number ] = Number L ; @@v14@@ [ Number ] = Number L ; @@v14@@ [ Number ] = Number L ; @@v15@@ [ Number ] = Number L ; @@v15@@ [ Number ] = Number L ; @@v15@@ [ Number ] = Number L ; @@v15@@ [ Number ] = Number L ; @@v16@@ [ Number ] = Number L ; @@v16@@ [ Number ] = Number L ; @@v16@@ [ Number ] = Number L ; @@v16@@ [ Number ] = Number L ; @@ptr@@ = ( char * ) zalloc ( Number ) ; if ( @@ptr@@ ) { if ( ! * ( _QWORD * ) ( @@a1@@ + Number ) || ( @@v9@@ = e_snprintf ( ( char * ) @@v14@@ , Number , String , * ( _QWORD * ) ( @@a1@@ + Number ) , v1 , v2 ) , @@v9@@ > Number ) ) { if ( ! * ( _DWORD * ) ( @@a1@@ + Number ) || ( @@v9@@ = e_snprintf ( ( char * ) @@v15@@ , Number , String , * ( unsigned int * ) ( @@a1@@ + Number ) , v1 , v2 ) , @@v9@@ > Number ) ) { if ( ! * ( _QWORD * ) @@a1@@ ) goto LABEL_14 ; s = * ( char * * ) @@a1@@ ; @@v10@@ = strlen ( * ( const char * * ) @@a1@@ ) ; if ( @@v10@@ > Number ) { sa = strchr ( ( const char * ) ( @@v10@@ - Number L + * ( _QWORD * ) @@a1@@ ) , Number ) ; if ( sa ) v5 = ( __int64 ) ( sa + Number ) ; else v5 = @@v10@@ - Number L + * ( _QWORD * ) @@a1@@ ; s = ( char * ) v5 ; } @@v9@@ = e_snprintf ( ( char * ) @@v16@@ , Number , String , ( __int64 ) s , v3 , v4 ) ; if ( @@v9@@ > Number ) { LABEL_14 : if ( * ( _QWORD * ) ( @@a1@@ + Number ) ) { v6 = * ( _BYTE * ) ( @@a1@@ + Number ) ? ( unsigned int ) e_snprintf ( @@ptr@@ , Number , String , * ( _QWORD * ) ( @@a1@@ + Number ) , ( __int64 ) @@v14@@ , ( __int64 ) String , @@v15@@ , @@v16@@ ) : ( unsigned int ) e_snprintf ( @@ptr@@ , Number , String , * ( _QWORD * ) ( @@a1@@ + Number ) , ( __int64 ) @@v14@@ , ( __int64 ) & unk_5925 , @@v15@@ , @@v16@@ ) ; @@v9@@ = v6 ; } else { @@v9@@ = e_snprintf ( @@ptr@@ , Number , String , ( __int64 ) @@v16@@ , ( __int64 ) @@v15@@ , v2 ) ; } if ( @@v9@@ > Number ) return @@ptr@@ ; } } } } else { @@v9@@ = Number ; } v8 = strerror ( - @@v9@@ ) ; eprintf ( Number L , String , v8 ) ; if ( @@ptr@@ ) free ( @@ptr@@ ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "v14", "t": {"T": 2, "n": 4, "s": 8, "t": "__int64"}, "location": "s112"}, {"n": "ptr", "t": {"T": 3, "t": "char"}, "location": "s120"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s132"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s136"}, {"n": "v16", "t": {"T": 2, "n": 6, "s": 8, "t": "__int64"}, "location": "s48"}, {"n": "v15", "t": {"T": 2, "n": 4, "s": 8, "t": "__int64"}, "location": "s80"}]}