============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined vinagre_spice_connection_get_ssh_tunnel_host() PUSH RBX TEST RDI,RDI JZ LAB_00134758 MOV RBX,RDI CALL vinagre_spice_connection_get_type ;undefined vinagre_spice_connection_g... MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_0013473e CMP qword ptr [RAX],RSI JZ LAB_0013474a LAB_0013473e: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00134758 LAB_0013474a: MOV RAX,qword ptr [RBX + 0x20] POP RBX MOV RAX,qword ptr [RAX + 0x20] RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00134758: LEA RDX,[.rodata:s_VINAGRE_IS_SPICE_CONNECTION_(con_0013e938] ;= "VINAGRE_IS_SPICE_CONNECTION (conn)" LEA RSI,[.rodata:__func__.0] ;= "vinagre_spice_connection_get_ssh_... XOR EDI,EDI CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() XOR EAX,EAX POP RBX RET ?? 66h f Actual src: const gchar * vinagre_spice_connection_get_ssh_tunnel_host (VinagreSpiceConnection *conn) { g_return_val_if_fail (VINAGRE_IS_SPICE_CONNECTION (conn), NULL); return conn->priv->ssh_tunnel_host; } Predicted src: const gchar * mm_connection_get_host_id (VinagreConnection *conn) { g_return_val_if_fail (VINAGRE_IS_CONNECTION (conn), NULL); return conn->priv->host_id; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined allocate_row() PUSH RBX MOV RAX,qword ptr [RDI] MOV RBX,RDI LEA RDI,[RAX + 0x10] CALL .plt:shash_count ;undefined shash_count() MOV R8,RAX MOV RAX,qword ptr [RBX] LEA RDX,[R8 + R8*0x2] MOV RAX,qword ptr [RAX + 0x38] SHL RAX,0x4 LEA RDI,[RAX + RDX*0x8 + 0x48] CALL .plt:xmalloc ;undefined xmalloc() LEA RDX,[RAX + 0x20] MOV qword ptr [RAX + 0x10],RBX MOV qword ptr [RAX + 0x20],RDX MOV qword ptr [RAX + 0x28],RDX LEA RDX,[RAX + 0x30] MOV qword ptr [RAX + 0x18],0x0 MOV qword ptr [RAX + 0x30],RDX MOV qword ptr [RAX + 0x38],RDX MOV qword ptr [RAX + 0x40],0x0 POP RBX RET ?? 66h f Actual src: static struct ovsdb_row * allocate_row(const struct ovsdb_table *table) { size_t n_fields = shash_count(&table->schema->columns); size_t n_indexes = table->schema->n_indexes; size_t row_size = (offsetof(struct ovsdb_row, fields) + sizeof(struct ovsdb_datum) * n_fields + sizeof(struct hmap_node) * n_indexes); struct ovsdb_row *row = xmalloc(row_size); row->table = CONST_CAST(struct ovsdb_table *, table); row->txn_row = NULL; ovs_list_init(&row->src_refs); ovs_list_init(&row->dst_refs); row->n_refs = 0; return row; } Predicted src: static void row_count (structrow *row) { struct row_row *row = xmalloc (sizeof *row); row->count = xmalloc (sizeof *row->count); row->count = xmalloc (sizeof *row->count); row->count = xmalloc (sizeof *row->count); row->count = xmalloc (sizeof *row->count); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* pugi::xml_node::hash_value() const * ;************************************************************************************************************************************************************ ;undefined hash_value(xml_node * this) ;this xml_node * RDI MOV RAX,qword ptr [this] SHR RAX,0x6 RET ?? 0Fh Actual src: size_t xml_node::hash_value() const { return static_cast(reinterpret_cast(_root) / sizeof(xml_node_struct)); } Predicted src: const std::string& xml_node::value() const { return m_value; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* v8_inspector::protocol::Profiler::ScriptCoverage::clone() const * ;************************************************************************************************************************************************************ ;undefined clone(ScriptCoverage * this) ;this ScriptCover... RDI ;local_58 undefined1 -58 ;local_60 undefined8 -60 PUSH RBP MOV RBP,RSP PUSH R14 MOV R14,RSI PUSH R13 LEA R13=>local_58,[RBP + -0x50] PUSH R12 MOV R12,this MOV this,R13 SUB RSP,0x48 CALL .plt:v8_inspector::protocol::ErrorSupport::ErrorSupport ;undefined ErrorSupport(ErrorSupport... LEA this=>local_60,[RBP + -0x58] MOV RSI,R14 CALL .plt:v8_inspector::protocol::Profiler::ScriptCoverage::toValue ;undefined toValue(void) MOV RSI,qword ptr [RBP + local_60+0x8] MOV this,R12 MOV RDX,R13 CALL .plt:v8_inspector::protocol::Profiler::ScriptCoverage::fromValue ;undefined fromValue(ScriptCoverage *... MOV this,qword ptr [RBP + local_60+0x8] TEST this,this JZ LAB_01229bba MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x18] LAB_01229bba: MOV this,R13 CALL .plt:v8_inspector::protocol::ErrorSupport::~ErrorSupport ;undefined ~ErrorSupport(ErrorSupport... ADD RSP,0x48 MOV RAX,R12 POP R12 POP R13 POP R14 POP RBP RET ?? 66h f Actual src: std::unique_ptr ScriptCoverage::clone() const { ErrorSupport errors; return fromValue(toValue().get(), &errors); } Predicted src: std::unique_ptr ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Ligature_find_N() LEA EAX,[RDI + -0x132] CMP EAX,0x11044 JA LAB_001ce84d PUSH RBX MOV EBX,EDI CMP EDI,0xffff JBE LAB_001ce7f0 CMP EDI,0x10f26 JBE LAB_001ce7cc MOV ECX,0x3 XOR ESI,ESI LEA RDI,[.rodata:ligature32] NOP word ptr [RAX + RAX*0x1] LAB_001ce7a8: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce7ad: LEA RDX,[RCX + RSI*0x1] SHR RDX,1 LEA RAX,[RDX*0x4] ; FWD[2,0]: 0045e44c,0045e450 CMP dword ptr [RDI + RDX*0x4]=>.rodata:ligature32[4],EBX JA LAB_001ce7d8 JZ LAB_001ce7e0 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce7ad LAB_001ce7cc: MOV EAX,0xffffffff POP RBX RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7d8: MOV RCX,RDX JMP LAB_001ce7a8 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce7e0: SAR RAX,0x2 POP RBX ADD EAX,0x1ff RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7f0: CALL .plt:ffUnicodeUtype ;undefined ffUnicodeUtype() TEST EAX,0x20000000 JZ LAB_001ce7cc MOV R8D,EBX MOV ECX,0x1ff XOR ESI,ESI LEA RDI,[.rodata:ligature16] CMP EBX,0xfefc JA LAB_001ce7cc NOP dword ptr [RAX] LAB_001ce818: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce81d: LEA RAX,[RCX + RSI*0x1] MOV RDX,RAX AND RAX,-0x2 SHR RDX,1 ; FWD[2,0]: 0045e65e,0045e75e CMP R8W,word ptr [RDI + RDX*0x2]=>.rodata:ligature16[510] JC LAB_001ce840 JZ LAB_001ce848 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce81d JMP LAB_001ce7cc ?? 90h LAB_001ce840: MOV RCX,RDX JMP LAB_001ce818 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce848: SAR RAX,1 POP RBX RET LAB_001ce84d: MOV EAX,0xffffffff RET ?? 66h f Actual src: int Ligature_find_N(uint32 uCode) { uint16 uCode16, *p16; uint32 *p32; int n=-1; if ( uCode < FF_ligature16FIRST || uCode > FF_ligature32LAST || \ ((uCode < FF_UTYPE_MAXC) && (isligorfrac(uCode)==0)) ) return( -1 ); if ( uCode <= FF_ligature16LAST ) { uCode16 = uCode; p16 = (uint16 *)(bsearch(&uCode16, ligature16, FF_ligatureTOTAL16, \ sizeof(uint16), compare_codepoints16)); if ( p16 ) n = p16 - ligature16; } else if ( uCode >= FF_ligature32FIRST ) { p32 = (uint32 *)(bsearch(&uCode, ligature32, FF_ligatureTOTAL32, \ sizeof(uint32), compare_codepoints32)); if ( p32 ) n = p32 - ligature32 + FF_ligatureTOTAL16; } return( n ); } Predicted src: int32_t find_int32(const char *s) { int32_t i; for (i = 0; i < 4; i++) { if (s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i]!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' && s[i!= '\0' &