{"name": "dso__load", "code": "__int64 __fastcall dso__load ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int ( __fastcall * @@a3@@ ) ( __int64 , char * ) ) { __int64 @@result@@ ; char v4 ; int v6 ; int v7 ; int @@v8@@ ; int @@fd@@ ; int @@v10@@ ; __int64 @@v11@@ ; char * @@s@@ ; char @@v13@@ [ Number ] ; char @@v14@@ [ Number ] ; unsigned __int64 @@v15@@ ; @@v15@@ = __readfsqword ( Number ) ; v6 = Number ; dso__set_loaded ( @@a1@@ , * ( _BYTE * ) ( @@a2@@ + Number ) ) ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) == Number ) return dso__load_kernel_sym ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) == Number ) return dso__load_guest_kernel_sym ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( * ( _QWORD * ) ( @@a2@@ + Number ) && * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ) @@v11@@ = * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ; else @@v11@@ = Number L ; @@s@@ = ( char * ) malloc ( Number ) ; if ( ! @@s@@ ) return Number ; * ( _BYTE * ) ( @@a1@@ + Number ) &= Number ; if ( ! strncmp ( ( const char * ) ( @@a1@@ + Number ) , String , Number ) ) { v7 = dso__load_perf_map ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( v7 <= Number ) v4 = Number ; else v4 = Number ; * ( _BYTE * ) ( @@a1@@ + Number ) = v4 ; return ( unsigned int ) v7 ; } @@v8@@ = Number ; LABEL_17 : * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; while ( Number ) { if ( * ( _BYTE * ) ( @@a1@@ + Number ) == Number ) goto LABEL_38 ; switch ( * ( _BYTE * ) ( @@a1@@ + Number ) ) { case Number : if ( ! * * ( ( _BYTE * * ) & symbol_conf + Number ) && dso__build_id_filename ( @@a1@@ , @@s@@ , Number L ) ) goto LABEL_31 ; goto LABEL_36 ; case Number : snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , * ( const char * * ) ( @@a1@@ + Number ) ) ; goto LABEL_31 ; case Number : snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , * ( const char * * ) ( @@a1@@ + Number ) ) ; goto LABEL_31 ; case Number : if ( ( * ( _BYTE * ) ( @@a1@@ + Number ) & Number ) == Number ) goto LABEL_36 ; build_id__sprintf ( ( unsigned __int8 * ) ( @@a1@@ + Number ) , Number , @@v13@@ ) ; snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , @@v13@@ , @@v14@@ ) ; LABEL_31 : @@fd@@ = open64 ( @@s@@ , Number ) ; if ( @@fd@@ < Number || ( v6 = dso__load_sym ( ( char * ) @@a1@@ , @@a2@@ , @@s@@ , @@fd@@ , @@a3@@ , Number , @@v8@@ ) , close ( @@fd@@ ) , ! v6 ) || v6 <= Number ) { LABEL_36 : ++ * ( _BYTE * ) ( @@a1@@ + Number ) ; continue ; } @@v10@@ = dso__synthesize_plt_symbols ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( @@v10@@ > Number ) v6 += @@v10@@ ; LABEL_38 : if ( v6 <= Number && @@v8@@ ) { @@v8@@ = Number ; goto LABEL_17 ; } free ( @@s@@ ) ; if ( v6 < Number && strstr ( ( const char * ) ( @@a1@@ + Number ) , String ) ) @@result@@ = Number L ; else @@result@@ = ( unsigned int ) v6 ; return @@result@@ ; case Number : case Number : snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , * ( const char * * ) ( @@a1@@ + Number ) ) ; goto LABEL_31 ; case Number : if ( * ( _QWORD * ) ( @@a2@@ + Number ) && @@v11@@ ) snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , * ( const char * * ) ( @@v11@@ + Number ) , * ( const char * * ) ( @@a1@@ + Number ) ) ; else snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , ( const char * ) & unk_72E0 , * ( const char * * ) ( @@a1@@ + Number ) ) ; goto LABEL_31 ; default : goto LABEL_31 ; } } }", "source": [{"n": "a3", "t": {"T": 9, "n": "unsigned int (__fastcall *)(__int64, char *)"}, "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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v8", "t": {"T": 1, "n": "int", "s": 4}, "location": "s104"}, {"n": "v14", "t": {"T": 2, "n": 54, "s": 1, "t": "char"}, "location": "s62"}, {"n": "v13", "t": {"T": 2, "n": 2, "s": 1, "t": "char"}, "location": "s64"}, {"n": "s", "t": {"T": 3, "t": "char"}, "location": "s72"}, {"n": "v15", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}, {"n": "v11", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s88"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}, {"n": "fd", "t": {"T": 1, "n": "int", "s": 4}, "location": "s96"}]}