============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined mi_free_size_aligned() MOV R8,RDX MOV RAX,RDI XOR EDX,EDX PUSH R12 DIV R8 PUSH RBP MOV R12,RSI SUB RSP,0x8 MOV RBP,RDI TEST RDX,RDX JNZ LAB_003191c0 ADD RSP,0x8 MOV RSI,R12 MOV RDI,RBP POP RBP POP R12 JMP mi_free_size ;undefined mi_free_size() ?? 90h LAB_003191c0: LEA RCX,[.rodata:__func__.3] ;= "mi_free_size_aligned" MOV EDX,0x219 LEA RSI,[.rodata:s_./extlib/mimalloc/src/alloc.c_003c138d] ;= "./extlib/mimalloc/src/alloc.c" LEA RDI,[.rodata:s_((uintptr_t)p_%_alignment)_==_0_003c1330] ;= "((uintptr_t)p % alignment) == 0" CALL _mi_assert_fail ;undefined _mi_assert_fail() ?? EBh ?? CCh ?? 66h f Actual src: void mi_free_size_aligned(void* p, size_t size, size_t alignment) mi_attr_noexcept { UNUSED_RELEASE(alignment); mi_assert(((uintptr_t)p % alignment) == 0); mi_free_size(p,size); } Predicted src: void _gcry_size_free (gcry_size_t size, size_t size) { _gcry_size_free (size, size); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _writeback_v() ;local_10 undefined8 -10 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 ;local_38 undefined8 -38 PUSH RBP MOV RBP,RSP SUB RSP,0x30 MOV qword ptr [RBP + local_20+0x8],RDI MOV qword ptr [RBP + local_28+0x8],RSI MOV qword ptr [RBP + local_30+0x8],RDX MOV qword ptr [RBP + local_38+0x8],RCX MOV RAX,qword ptr [RBP + local_38+0x8] MOV qword ptr [RBP + local_10+0x8],RAX MOV RAX,qword ptr [RBP + local_10+0x8] MOV ESI,0x2 MOV RDI,RAX CALL _test_flags ;undefined _test_flags() TEST AL,AL JZ LAB_00295efb MOV RAX,qword ptr [RBP + local_10+0x8] MOV RDI,RAX CALL _issue_write ;undefined _issue_write() LAB_00295efb: MOV EAX,0x1 LEAVE RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _invalidate_v() ;local_10 undefined8 -10 ;local_18 undefined8 -18 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 ;local_38 undefined8 -38 PUSH RBP Actual src: static bool _writeback_v(struct radix_tree_iterator *it, uint8_t *kb, uint8_t *ke, union radix_value v) { struct block *b = v.ptr; if (_test_flags(b, BF_DIRTY)) _issue_write(b); return true; } Predicted src: static int _write_flags(struct cmd_context *cmd, struct cmd_context *cmd, void *data) { struct cmd_context *cmd = data; if (!cmd) return 0; cmd->flags |= cmd->flags; return 1; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* QComboBox_Adaptor::sizeHint() const * ;************************************************************************************************************************************************************ ;undefined sizeHint(QComboBox_Adaptor * this) ;this QComboBox_A... RDI PUSH R12 LEA R12,[this + 0x278] PUSH RBP MOV RBP,this MOV this,R12 SUB RSP,0x8 CALL .plt:::tl::WeakOrSharedPtr::get ;undefined get(void) TEST RAX,RAX JZ LAB_00c0bc3e MOV this,R12 CALL .plt:::tl::WeakOrSharedPtr::get ;undefined get(void) MOV this,RAX TEST RAX,RAX JZ LAB_00c0bc4d MOV RDX=>.data.rel.ro:gsi::Callee::typeinfo,qword ptr [->gsi::Callee::typeinfo] ;= 02782628 ;= 02a29710 MOV RSI=>EXTERNAL:tl::Object::typeinfo,qword ptr [->tl::Object::typeinfo] ;= 02a1e480 ;=?? XOR ECX,ECX CALL .plt:::__dynamic_cast ;undefined __dynamic_cast() MOV this,RAX MOV RAX,qword ptr [RAX] MOV RAX,qword ptr [RAX + 0x18] CMP RAX,qword ptr [->gsi::Callee::can_call] ;= 00914c70 JNZ LAB_00c0bc38 LAB_00c0bc16: ADD RSP,0x8 LEA this,[RBP + 0x270] LEA RSI,[QComboBox_Adaptor::cbs_sizeHint_c0_0] XOR EDX,EDX POP RBP POP R12 JMP gsi::Callback::issue ;QSize issue... ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00c0bc38: CALL RAX TEST AL,AL JNZ LAB_00c0bc16 LAB_00c0bc3e: ADD RSP,0x8 MOV this,RBP POP RBP POP R12 JMP .plt:::QComboBox::sizeHint ;undefined sizeHint(void) LAB_00c0bc4d: MOV RAX,qword ptr [DAT_00000000] UD2 ?? 66h f Actual src: virtual QSize sizeHint() const { if (cb_sizeHint_c0_0.can_issue()) { return cb_sizeHint_c0_0.issue(&QComboBox_Adaptor::cbs_sizeHint_c0_0); } else { return QComboBox::sizeHint(); } } Predicted src: virtual QSize sizeHint() const { if (cb_sizeHint_c0_0.can_issue()) { return cb_sizeHint_c0_0.issue(&QVideoView_Adaptor::cbs_sizeHint_c0_0); } else { return QGraphicsVideoView::sizeHint(); } } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined hdy_gtk_window_toggle_maximized() PUSH RBP MOV RBP,RDI CALL .plt:::gtk_window_is_maximized ;undefined gtk_window_is_maximized() MOV RDI,RBP TEST EAX,EAX JZ LAB_00114a20 POP RBP JMP .plt:LAB_00111140 ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00114a20: POP RBP JMP .plt:LAB_00111ce0 ?? 66h f Actual src: void hdy_gtk_window_toggle_maximized (GtkWindow *window) { if (gtk_window_is_maximized (window)) gtk_window_unmaximize (window); else gtk_window_maximize (window); } Predicted src: static void gtk_window_is_visible (GtkWidget *widget) { if (gtk_toggle_window_is_visible (widget)) gtk_window_is_visible (widget); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* Digikam::ImportItemModel::camItemInfoRef(QModelIndex const&) const * ;************************************************************************************************************************************************************ ;undefined camItemInfoRef(ImportItemModel * this, QModelIndex * param_1) ;this ImportItemM... RDI ;param_1 QModelIndex * RSI PUSH RBP PUSH RBX SUB RSP,0x8 MOVSXD RBP,dword ptr [param_1] MOV RBX,qword ptr [this + 0x20] TEST EBP,EBP JS LAB_005bc3c0 MOV EAX,dword ptr [param_1 + 0x4] TEST EAX,EAX JS LAB_005bc3c0 CMP qword ptr [param_1 + 0x10],0x0 JZ LAB_005bc3c0 MOV RAX,qword ptr [RBX + 0x8] MOV EDX,dword ptr [RAX + 0xc] SUB EDX,dword ptr [RAX + 0x8] CMP EBP,EDX JGE LAB_005bc3c0 MOV EDX,dword ptr [RAX] CMP EDX,0x1 JBE LAB_005bc3a4 MOV param_1,dword ptr [RAX + 0x4] LEA this,[RBX + 0x8] CALL QList::detach_helper ;undefined detach_helper(int param_1) MOV RAX,qword ptr [RBX + 0x8] LAB_005bc3a4: MOVSXD RDX,dword ptr [RAX + 0x8] ADD RDX,RBP MOV RAX,qword ptr [RAX + RDX*0x8 + 0x10] ADD RSP,0x8 POP RBX POP RBP RET ?? 66h f ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_005bc3c0: ADD RSP,0x8 LEA RAX,[RBX + 0x10] POP RBX POP RBP RET ?? 90h Actual src: CamItemInfo& ImportItemModel::camItemInfoRef(const QModelIndex& index) const { if (!d->isValid(index)) { return d->camItemInfo; } return d->infos[index.row()]; } Predicted src: QList ItemItemDelegate::item(const QModelIndex &index) const { if (index.isValid()) { return d->index; } else { return 0; } }