{"name": "dso__synthesize_plt_symbols", "code": "__int64 __fastcall dso__synthesize_plt_symbols ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int ( __fastcall * @@a3@@ ) ( __int64 , char * ) ) { const char * v3 ; const char * v4 ; unsigned int v7 ; unsigned int v8 ; unsigned int @@v9@@ ; int @@v10@@ ; int @@fd@@ ; unsigned int @@v12@@ ; unsigned int v13 ; unsigned int v14 ; __int64 @@v15@@ ; __int64 @@v16@@ ; __int64 @@v17@@ ; __int64 @@v18@@ ; __int64 @@v19@@ ; __int64 @@v20@@ ; __int64 @@v21@@ ; __int64 @@v22@@ ; __int64 @@v23@@ ; __int64 @@v24@@ ; _QWORD * @@v25@@ ; char * @@v26@@ ; unsigned int @@v27@@ [ Number ] ; char @@v28@@ [ Number ] ; unsigned int @@v29@@ [ Number ] ; __int64 @@v30@@ ; __int64 @@v31@@ ; unsigned int @@v32@@ ; int @@v33@@ ; unsigned __int64 @@v34@@ ; int @@v35@@ ; unsigned __int64 @@v36@@ ; unsigned int @@v37@@ [ Number ] ; char @@v38@@ [ Number ] ; char @@v39@@ [ Number ] ; char @@s@@ [ Number ] ; unsigned __int64 @@v41@@ ; @@v41@@ = __readfsqword ( Number ) ; @@v9@@ = Number ; @@v10@@ = Number ; snprintf ( @@s@@ , Number , String , * ( ( const char * * ) & symbol_conf + Number ) , * ( const char * * ) ( @@a1@@ + Number ) ) ; @@fd@@ = open64 ( @@s@@ , Number ) ; if ( @@fd@@ >= Number ) { @@v20@@ = elf_begin ( ( unsigned int ) @@fd@@ , Number L , Number L ) ; if ( @@v20@@ ) { if ( gelf_getehdr ( @@v20@@ , @@v38@@ ) ) { @@v21@@ = elf_section_by_name ( @@v20@@ , ( __int64 ) @@v38@@ , @@v37@@ , String , & @@v15@@ ) ; if ( @@v21@@ ) { @@v17@@ = elf_section_by_name ( @@v20@@ , ( __int64 ) @@v38@@ , & @@v32@@ , String , Number L ) ; if ( @@v17@@ || ( @@v17@@ = elf_section_by_name ( @@v20@@ , ( __int64 ) @@v38@@ , & @@v32@@ , String , Number L ) ) != Number ) { @@v10@@ = Number ; if ( @@v35@@ == @@v15@@ ) { if ( elf_section_by_name ( @@v20@@ , ( __int64 ) @@v38@@ , @@v29@@ , String , Number L ) ) { @@v22@@ = elf_getdata ( @@v17@@ , Number L ) ; if ( @@v22@@ ) { @@v23@@ = elf_getdata ( @@v21@@ , Number L ) ; if ( @@v23@@ ) { @@v24@@ = elf_getscn ( @@v20@@ , @@v37@@ [ Number ] ) ; if ( @@v24@@ ) { @@v25@@ = ( _QWORD * ) elf_getdata ( @@v24@@ , Number L ) ; if ( @@v25@@ ) { @@v12@@ = @@v34@@ / @@v36@@ ; @@v16@@ = @@v30@@ ; if ( @@v33@@ == Number ) { v7 = Number ; @@v18@@ = gelf_getrela ( @@v22@@ , Number L , @@v28@@ ) ; while ( v7 < @@v12@@ ) { v13 = HIDWORD ( * ( _QWORD * ) ( @@v18@@ + Number ) ) ; @@v16@@ += @@v31@@ ; gelf_getsym ( @@v23@@ , v13 , @@v27@@ ) ; v3 = ( const char * ) elf_sym__name ( @@v27@@ , @@v25@@ ) ; snprintf ( @@v39@@ , Number , String , v3 ) ; @@v26@@ = symbol__new ( @@v16@@ , @@v31@@ , Number , @@v39@@ ) ; if ( ! @@v26@@ ) goto LABEL_33 ; if ( @@a3@@ && @@a3@@ ( @@a2@@ , @@v26@@ ) ) { symbol__delete ( ( __int64 ) @@v26@@ ) ; } else { symbols__insert ( ( __int64 * ) ( @@a1@@ + Number * ( * ( unsigned __int8 * ) ( @@a2@@ + Number ) + Number L ) ) , @@v26@@ ) ; ++ @@v9@@ ; } @@v18@@ = gelf_getrela ( @@v22@@ , ++ v7 , @@v28@@ ) ; } } else if ( @@v33@@ == Number ) { v8 = Number ; @@v19@@ = gelf_getrel ( @@v22@@ , Number L , @@v28@@ ) ; while ( v8 < @@v12@@ ) { v14 = HIDWORD ( * ( _QWORD * ) ( @@v19@@ + Number ) ) ; @@v16@@ += @@v31@@ ; gelf_getsym ( @@v23@@ , v14 , @@v27@@ ) ; v4 = ( const char * ) elf_sym__name ( @@v27@@ , @@v25@@ ) ; snprintf ( @@v39@@ , Number , String , v4 ) ; @@v26@@ = symbol__new ( @@v16@@ , @@v31@@ , Number , @@v39@@ ) ; if ( ! @@v26@@ ) goto LABEL_33 ; if ( @@a3@@ && @@a3@@ ( @@a2@@ , @@v26@@ ) ) { symbol__delete ( ( __int64 ) @@v26@@ ) ; } else { symbols__insert ( ( __int64 * ) ( @@a1@@ + Number * ( * ( unsigned __int8 * ) ( @@a2@@ + Number ) + Number L ) ) , @@v26@@ ) ; ++ @@v9@@ ; } @@v19@@ = gelf_getrel ( @@v22@@ , ++ v8 , @@v28@@ ) ; } } @@v10@@ = Number ; } } } } } } } } } LABEL_33 : elf_end ( @@v20@@ ) ; } close ( @@fd@@ ) ; if ( ! @@v10@@ ) return @@v9@@ ; } eprintf ( Number L , String , String , * ( const char * * ) ( @@a1@@ + Number ) ) ; return Number L ; }", "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": "s", "t": {"T": 2, "n": 4104, "s": 1, "t": "char"}, "location": "s4112"}, {"n": "v39", "t": {"T": 2, "n": 1024, "s": 1, "t": "char"}, "location": "s5136"}, {"n": "v38", "t": {"T": 2, "n": 64, "s": 1, "t": "char"}, "location": "s5200"}, {"n": "v37", "t": {"T": 2, "n": 16, "s": 4, "t": "unsigned int"}, "location": "s5264"}, {"n": "v36", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s5272"}, {"n": "v35", "t": {"T": 1, "n": "int", "s": 4}, "location": "s5288"}, {"n": "v34", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s5296"}, {"n": "v33", "t": {"T": 1, "n": "int", "s": 4}, "location": "s5324"}, {"n": "v32", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s5328"}, {"n": "v31", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5336"}, {"n": "v30", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5368"}, {"n": "v29", "t": {"T": 2, "n": 6, "s": 4, "t": "unsigned int"}, "location": "s5392"}, {"n": "v28", "t": {"T": 2, "n": 32, "s": 1, "t": "char"}, "location": "s5424"}, {"n": "v27", "t": {"T": 2, "n": 8, "s": 4, "t": "unsigned int"}, "location": "s5456"}, {"n": "v26", "t": {"T": 3, "t": "char"}, "location": "s5464"}, {"n": "v25", "t": {"T": 3, "t": "_QWORD"}, "location": "s5472"}, {"n": "v24", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5480"}, {"n": "v23", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5488"}, {"n": "v22", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5496"}, {"n": "v21", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5504"}, {"n": "v20", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5512"}, {"n": "v19", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5520"}, {"n": "v18", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5528"}, {"n": "v17", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5536"}, {"n": "v16", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5544"}, {"n": "v15", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s5552"}, {"n": "v12", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s5560"}, {"n": "fd", "t": {"T": 1, "n": "int", "s": 4}, "location": "s5564"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s5568"}, {"n": "v9", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s5572"}, {"n": "v41", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}