============================== Sample 1 ============================== 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(struct row *row) { struct row *row = row_new(struct row); row->count = row->count; row->count = row->count; row->count = row->count; row->count = row->count; row->count = row->count; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* KDL::Path_RoundedComposite::GetLengthToEndOfSegment(int) * ;************************************************************************************************************************************************************ ;undefined GetLengthToEndOfSegment(int param_1) ;param_1 int EDI MOV param_1,qword ptr [param_1 + 0x8] MOV RAX,qword ptr [param_1] JMP qword ptr [RAX + 0x60] ?? 66h f Actual src: double Path_RoundedComposite::GetLengthToEndOfSegment(int i) { return comp->GetLengthToEndOfSegment(i); } Predicted src: int GetPathLength(int maxLength) override { return GetPathLength(maxLength); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _champVLAFree() MOV R8,RDI MOV ECX,0x2 LEA RDI,[RDX + -0x10] MOV EDX,ESI MOV RSI,R8 JMP OSMemoryFree ;undefined OSMemoryFree() ?? 66h f Actual src: void _champVLAFree(const char *file,int line,void *ptr) #endif { VLARec *vla; vla = &(((VLARec*)ptr)[-1]); #ifndef _os_memory_debug_on os_free(vla); #else OSMemoryFree(vla,file,line,_OSMemoryVLA); #endif } Predicted src: void _FreeFree(void *ptr, size_t size) { memset(ptr, 0, size); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* s_CouldNotLoadFileMessage(XAP_Frame*, char const*, int) * ;************************************************************************************************************************************************************ ;undefined s_CouldNotLoadFileMessage(XAP_Frame * param_1, char * param_2, int param_3) ;param_1 XAP_Frame * RDI ;param_2 char * RSI ;param_3 int EDX ADD param_3,0x137 MOV R8,param_2 MOV param_2,0x3f5 CMP param_3,0xa JA LAB_0010ee9d LEA RAX,[.rodata:CSWTCH.122] MOV param_2,dword ptr [RAX + param_3*0x4]=>.rodata:CSWTCH.122 LAB_0010ee9d: XOR ECX,ECX XOR param_3,param_3 JMP .plt:LAB_0010b670 ?? 66h f Actual src: XAP_Dialog_MessageBox::tAnswer s_CouldNotLoadFileMessage(XAP_Frame * pFrame, const char * pNewFile, UT_Error errorCode) { XAP_String_Id String_id; switch (errorCode) { case -301: String_id = AP_STRING_ID_MSG_IE_FileNotFound; break; case -302: String_id = AP_STRING_ID_MSG_IE_NoMemory; break; case -303: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; //AP_STRING_ID_MSG_IE_UnknownType; break; case -304: String_id = AP_STRING_ID_MSG_IE_BogusDocument; break; case -305: String_id = AP_STRING_ID_MSG_IE_CouldNotOpen; break; case -306: String_id = AP_STRING_ID_MSG_IE_CouldNotWrite; break; case -307: String_id = AP_STRING_ID_MSG_IE_FakeType; break; case -311: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; break; default: String_id = AP_STRING_ID_MSG_ImportError; } return pFrame->showMessageBox(String_id, XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK, pNewFile); } Predicted src: void XFrameFrameFrameFrameFrameFrame(XFrameFrameFrameFrame *FrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFrameFram ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* KDL::Path_RoundedComposite::GetLengthToEndOfSegment(int) * ;************************************************************************************************************************************************************ ;undefined GetLengthToEndOfSegment(int param_1) ;param_1 int EDI MOV param_1,qword ptr [param_1 + 0x8] MOV RAX,qword ptr [param_1] JMP qword ptr [RAX + 0x60] ?? 66h f Actual src: double Path_RoundedComposite::GetLengthToEndOfSegment(int i) { return comp->GetLengthToEndOfSegment(i); } Predicted src: int GetPathLength(int offset) override { return m_p->GetPathLength(); }