============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined V_FillRect8() PUSH R14 MOVSXD RSI,ESI MOVSXD R14,ECX PUSH R13 PUSH R12 PUSH RBP LEA RBP,[.bss:screens] PUSH RBX MOVSXD RBX,EDI SHL RBX,0x5 LEA RAX,[RBP + RBX*0x1] IMUL EDX,dword ptr [RAX + 0x14]=>.bss:screens[20] MOVSXD RDX,EDX LEA RCX,[RDX + RSI*0x1] ADD RCX,qword ptr [RAX]=>.bss:screens TEST R8D,R8D JZ LAB_001f36cf LEA R12D,[R8 + -0x1] MOVZX R13D,R9B NOP dword ptr [RAX] LAB_001f36b0: MOV RDI,RCX MOV RDX,R14 MOV ESI,R13D CALL .plt:::memset ;void * memset(void * __s, int __c, s... MOV RCX,RAX MOVSXD RAX,dword ptr [RBP + RBX*0x1 + 0x14]=>.bss:screens[20] ADD RCX,RAX SUB R12D,0x1 JNC LAB_001f36b0 LAB_001f36cf: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 0Fh Actual src: static void V_FillRect8(int scrn, int x, int y, int width, int height, byte colour) { byte* dest = screens[scrn].data + x + y*screens[scrn].byte_pitch; while (height--) { memset(dest, colour, width); dest += screens[scrn].byte_pitch; } } Predicted src: void s_memset(int x, int y, int x, int y, int w, int h) { int i; for (i = 0; i < w; i++) { memset(s[i], 0, x * w * h); } } ============================== 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_row_row_count(struct row_row *row) { struct row_row_row *row = row_cast(row_); row->row_count = row->row_count; row->row_count = row->row_count; row->row_count = row->row_count; row->row_count = row->row_count; row->row_count = row->row_count; row->row_count = row->row_count; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined crashhandlerOptionsInitDisplay() ;local_1c undefined4 -1c PUSH R12 MOV EDI,0x1 MOV R12,RSI MOV ESI,0x1a8 PUSH RBP SUB RSP,0x18 CALL .plt:::calloc ;void * calloc(size_t __nmemb, size_t... TEST RAX,RAX JZ LAB_00102aa8 MOV RDI,R12 MOV RBP,RAX CALL .plt:allocateScreenPrivateIndex ;undefined allocateScreenPrivateIndex() MOV dword ptr [RBP],EAX TEST EAX,EAX JS LAB_00102a78 MOVSXD RDX,dword ptr [.bss:CrashhandlerOptionsDisplayPrivateIndex] ;=?? MOV RAX,qword ptr [R12 + 0x8] MOV RDI,R12 LEA RCX,[RBP + 0x8] MOV R8D,0x4 LEA RSI,[.bss:crashhandlerOptionsMetadata] ;=?? MOV qword ptr [RAX + RDX*0x8],RBP LEA RDX,[.data.rel.ro:crashhandlerOptionsDisplayOptionInfo] CALL .plt:compInitDisplayOptionsFromMetadata ;undefined compInitDisplayOptionsFrom... TEST EAX,EAX JZ LAB_00102a90 MOV EAX,0x1 LAB_00102a6d: ADD RSP,0x18 POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_00102a78: MOV RDI,RBP CALL .plt:::free ;void free(void * __ptr) ADD RSP,0x18 XOR EAX,EAX POP RBP POP R12 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00102a90: MOV RDI,RBP MOV dword ptr [RSP + local_1c+0x28],EAX CALL .plt:::free ;void free(void * __ptr) MOV EAX,dword ptr [RSP + local_1c+0x28] ADD RSP,0x18 POP RBP POP R12 RET LAB_00102aa8: XOR EAX,EAX JMP LAB_00102a6d ?? 0Fh Actual src: static Bool crashhandlerOptionsInitDisplay (CompPlugin *p, CompDisplay *d) { CrashhandlerOptionsDisplay *od; od = calloc (1, sizeof(CrashhandlerOptionsDisplay)); if (!od) return FALSE; od->screenPrivateIndex = allocateScreenPrivateIndex(d); if (od->screenPrivateIndex < 0) { free(od); return FALSE; } d->base.privates[CrashhandlerOptionsDisplayPrivateIndex].ptr = od; if (!compInitDisplayOptionsFromMetadata (d, &crashhandlerOptionsMetadata, crashhandlerOptionsDisplayOptionInfo, od->opt, CrashhandlerDisplayOptionNum)) { free (od); return FALSE; } return TRUE; } Predicted src: static Bool displayOptionsInitDisplayOptions (CompPlugin *p, CompDisplay *d) { int i; if (!od) { return FALSE; } if (!od->base.privates) { free (od->base.privates); return FALSE; } for (i = 0; i < 3; i++) { free (od->base.privates[i]); free (od); return TRUE; } return TRUE; } ============================== 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: Value Value::clone() const { return d->clone(); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* HistogramDockerDock::startUpdateCanvasProjection() * ;************************************************************************************************************************************************************ ;undefined startUpdateCanvasProjection(HistogramDockerDock * this) ;this HistogramDo... RDI MOV RAX,qword ptr [this + 0x28] TEST byte ptr [RAX + 0x9],0x80 JNZ LAB_0010b110 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010b110: MOV this,qword ptr [this + 0x48] JMP .plt:LAB_00108030 ?? 90h Actual src: void HistogramDockerDock::startUpdateCanvasProjection() { if (isVisible()) { m_imageIdleWatcher->startCountdown(); } } Predicted src: void SstartUpdate::UpdateUpdate() { if (m_pUpdate) { m_pUpdate->Update(); } }