{"name": "die_get_type", "code": "__int64 __fastcall die_get_type ( __int64 @@a1@@ , __int64 @@a2@@ ) { __int64 @@result@@ ; char @@v3@@ [ Number ] ; unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; if ( dwarf_attr_integrate ( @@a1@@ , Number L , @@v3@@ ) && dwarf_formref_die ( @@v3@@ , @@a2@@ ) ) @@result@@ = @@a2@@ ; else @@result@@ = Number L ; return @@result@@ ; }", "source": [{"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": "v3", "t": {"T": 2, "n": 24, "s": 1, "t": "char"}, "location": "s32"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "__die_get_real_type", "code": "struct Dwarf_Die_s * __fastcall _die_get_real_type ( struct Dwarf_Die_s * @@a1@@ , Dwarf_Half * @@a2@@ ) { Dwarf_Error * @@v2@@ ; int @@v5@@ ; do { @@a1@@ = ( struct Dwarf_Die_s * ) die_get_type ( ( __int64 ) @@a1@@ , ( __int64 ) @@a2@@ ) ; if ( ! @@a1@@ ) break ; @@v5@@ = dwarf_tag ( @@a1@@ , @@a2@@ , @@v2@@ ) ; } while ( @@v5@@ == Number || @@v5@@ == Number || @@v5@@ == Number || @@v5@@ == Number ) ; return @@a1@@ ; }", "source": [{"n": "v2", "t": {"T": 3, "t": "Dwarf_Error"}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "struct Dwarf_Die_s"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "Dwarf_Half"}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}]} {"name": "die_get_typename", "code": "__int64 __fastcall die_get_typename ( struct Dwarf_Die_s * @@a1@@ , char * @@a2@@ , int @@a3@@ ) { Dwarf_Error * v3 ; __int64 result ; Dwarf_Error * v5 ; __int64 v6 ; Dwarf_Error * v7 ; const char * v8 ; int v9 ; int v11 ; int v12 ; int v13 ; int @@v14@@ ; int @@v15@@ ; const char * @@v16@@ ; char * @@v17@@ [ Number ] ; @@v17@@ [ Number ] = ( char * ) __readfsqword ( Number ) ; @@v16@@ = ( const char * ) & unk_188F ; if ( ! _die_get_real_type ( @@a1@@ , ( Dwarf_Half * ) @@v17@@ ) ) return Number L ; @@v14@@ = dwarf_tag ( ( Dwarf_Die ) @@v17@@ , ( Dwarf_Half * ) @@v17@@ , v3 ) ; if ( @@v14@@ == Number || @@v14@@ == Number ) { v11 = die_get_typename ( @@v17@@ , @@a2@@ , ( unsigned int ) @@a3@@ ) ; if ( v11 > Number ) { @@v15@@ = snprintf ( & @@a2@@ [ v11 ] , @@a3@@ - v11 , String , String ) ; if ( @@v15@@ >= @@a3@@ - v11 ) v9 = Number ; else v9 = @@v15@@ + v11 ; v11 = v9 ; } result = ( unsigned int ) v11 ; } else if ( @@v14@@ == Number ) { v12 = snprintf ( @@a2@@ , @@a3@@ , String ) ; if ( v12 >= @@a3@@ ) result = Number L ; else result = ( unsigned int ) v12 ; } else { LODWORD ( v6 ) = dwarf_diename ( ( Dwarf_Die ) @@v17@@ , @@v17@@ , v5 ) ; if ( v6 ) { if ( @@v14@@ == Number ) { @@v16@@ = String ; } else if ( @@v14@@ == Number ) { @@v16@@ = String ; } LODWORD ( v8 ) = dwarf_diename ( ( Dwarf_Die ) @@v17@@ , @@v17@@ , v7 ) ; v13 = snprintf ( @@a2@@ , @@a3@@ , String , @@v16@@ , v8 ) ; if ( v13 >= @@a3@@ ) result = Number L ; else result = ( unsigned int ) v13 ; } else { result = Number L ; } } return result ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "struct Dwarf_Die_s"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "char"}, "location": "r64"}, {"n": "v17", "t": {"T": 2, "n": 6, "s": 8, "t": "char *"}, "location": "s48"}, {"n": "v16", "t": {"T": 3, "t": "const char"}, "location": "s56"}, {"n": "v15", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v14", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}]} {"name": "die_get_varname", "code": "__int64 __fastcall die_get_varname ( struct Dwarf_Die_s * @@a1@@ , char * @@a2@@ , int @@a3@@ ) { Dwarf_Error * v3 ; const char * v4 ; int v5 ; char * @@s@@ ; int @@v9@@ ; int @@v10@@ ; @@s@@ = @@a2@@ ; @@v9@@ = die_get_typename ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( @@v9@@ < Number ) { eprintf ( Number L , String ) ; @@a2@@ = ( char * ) @@a3@@ ; @@v9@@ = snprintf ( @@s@@ , @@a3@@ , String ) ; } if ( @@v9@@ > Number ) { LODWORD ( v4 ) = dwarf_diename ( @@a1@@ , ( char * * ) @@a2@@ , v3 ) ; @@v10@@ = snprintf ( & @@s@@ [ @@v9@@ ] , @@a3@@ - @@v9@@ , String , v4 ) ; if ( @@v10@@ >= @@a3@@ - @@v9@@ ) v5 = Number ; else v5 = @@v10@@ + @@v9@@ ; @@v9@@ = v5 ; } return ( unsigned int ) @@v9@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "struct Dwarf_Die_s"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "char"}, "location": "r64"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "s", "t": {"T": 3, "t": "char"}, "location": "s32"}]}